package com.sztx.pay.center.core.service;

import com.sztx.pay.center.core.service.bean.PayCoreAccountInfo;
import com.sztx.pay.center.core.service.bean.PayCoreBatchTransfer;
import com.sztx.pay.center.core.service.bean.PayCoreBatchTransferResult;
import com.sztx.pay.center.core.service.bean.PayCoreDistribute;
import com.sztx.pay.center.core.service.bean.PayCoreRefund;
import com.sztx.pay.center.core.service.bean.PayCoreResult;
import com.sztx.pay.center.core.service.bean.PayCoreTransfer;
import com.sztx.pay.center.core.service.bean.TradeInfo;
import com.sztx.trade.payment.gateway.rpc.api.service.distribute.RespDistribute;
import com.sztx.trade.payment.gateway.rpc.api.service.refund.RespRefund;
import com.sztx.trade.payment.gateway.rpc.api.service.trade.RespTrade;
import com.sztx.trade.payment.gateway.rpc.api.service.transfer.RespBatchTransfer;
import com.sztx.trade.payment.gateway.rpc.api.service.transfer.RespTransfer;

public interface PayService {
		//支付
		PayCoreResult pay(PayCoreAccountInfo payerAccount, TradeInfo tradeInfo, String serviceName, String originOrderId);
		PayCoreResult handPayResult(RespTrade result, boolean callOrder);
		
		PayCoreResult verifyQuickPayTrade(String orderId, String verifyCode);
		
		
		//转账
		PayCoreResult transfer(PayCoreTransfer payCoreTransfer, String serviceName,String originOrderId);	
		PayCoreResult handTransferResult(RespTransfer result, boolean callOrder);
		
		//批量转账
		PayCoreBatchTransferResult batchTransfer(PayCoreBatchTransfer payCoreBatchTransfer, String serviceName);
		PayCoreBatchTransferResult handBatchTransferResult(RespBatchTransfer result, boolean callOrder);
		
		//代发
		PayCoreResult distribute(PayCoreDistribute payCoreDistribute, String serviceName,String originOrderId);
		PayCoreResult handDistributeResult(RespDistribute result, boolean callOrder);

		
		PayCoreResult refund(PayCoreRefund refund, String serviceName,String originOrderId);
		PayCoreResult handRefundResult(RespRefund result, boolean callOrder);
		
		//重新发送快捷支付绑卡短信
		void resendQuickVC(String referOrderId);
}
